package com.tanhua.sso.controller;

import com.tanhua.sso.service.SmsService;
import com.tanhua.sso.vo.ErrorResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@Slf4j
@RestController
@RequestMapping("/user")
public class SmsController {

    @Autowired
    private SmsService smsService;

    @PostMapping("login")
    /**
     *  用户登录 发送验证码的方法
        * @param
        * @return
        * @author Wenshengzhang
        * @date
    */
    public ResponseEntity<ErrorResult> sendCheckCode(@RequestBody Map<String,String> map){
        ErrorResult errorResult = null;
        String phone = map.get("phone");
        try {
            // 1. 调用service的发送验证码的方法,并将用户输入的手机号作为参数进行传递
            errorResult = smsService.sendCheckCode(phone);

            // 2. 判断返回的结果是否为空
            if (errorResult==null){
                // 如果为空 说明发送验证码成功
                return ResponseEntity.ok(null);
            }
        } catch (Exception e) {
            log.error("短信验证码发送失败" + phone,e);
            errorResult = ErrorResult.builder().errCode("000002").errMessage("短信验证码发送失败").build();

        }
        /* 此时返回的 errorResult 对象是根据代码的执行情况动态变化的，
            1.如果调用sendSms 发送短信方法 返回结果即不为空也不报错，那么就直接返回service层返回过来的结果对象
            2.如果调用sendSms 发送短信方法 返回结果即不为空，但是在调用过程中报错了，那么就返回catch中
              重新给errorResult对象赋值的结果
            */
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResult);
    }
}
